}
public function doUpdate() {
- $job = new HTMLCacheUpdateJob(
- $this->mTitle,
- array(
- 'table' => $this->mTable,
- 'recursive' => true
- ) + Job::newRootJobParams( // "overall" refresh links job info
- "htmlCacheUpdate:{$this->mTable}:{$this->mTitle->getPrefixedText()}"
- )
- );
+ $job = HTMLCacheUpdateJob::newForBacklinks( $this->mTitle, $this->mTable );
- $count = $this->mTitle->getBacklinkCache()->getNumLinks( $this->mTable, 100 );
- if ( $count >= 100 ) { // many backlinks
- JobQueueGroup::singleton()->lazyPush( $job );
- } else { // few backlinks ($count might be off even if 0)
- $dbw = wfGetDB( DB_MASTER );
- $dbw->onTransactionIdle( function () use ( $job ) {
- $job->run(); // just do the purge query now
- } );
- }
+ JobQueueGroup::singleton()->lazyPush( $job );
}
}
* - a) Recursive jobs to purge caches for backlink pages for a given title.
* These jobs have (recursive:true,table:<table>) set.
* - b) Jobs to purge caches for a set of titles (the job title is ignored).
- * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set.
+ * These jobs have (pages:(<page ID>:(<namespace>,<title>),...) set.
*
* @ingroup JobQueue
*/
$this->removeDuplicates = ( !isset( $params['range'] ) && !isset( $params['pages'] ) );
}
+ /**
+ * @param Title $title Title to purge backlink pages from
+ * @param string $table Backlink table name
+ * @return HTMLCacheUpdateJob
+ */
+ public static function newForBacklinks( Title $title, $table ) {
+ return new self(
+ $title,
+ array(
+ 'table' => $table,
+ 'recursive' => true
+ ) + Job::newRootJobParams( // "overall" refresh links job info
+ "htmlCacheUpdate:{$table}:{$title->getPrefixedText()}"
+ )
+ );
+ }
+
function run() {
global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;